void main() {
  //List有序且可重复的
  //1、List的构建
  var list = new List();
  // 创建一个int类型的list
  List intlist = [1, 2, 3];
  // 创建一个常量List， 不可以改变的List
  List constList = const [4, 5, 6];
//  constList[0] = 1;//Cannot modify an unmodifiable list
  List<String> colorList1 = ['red', 'yellow', 'blue', 'green']; //直接使用[]形式初始化
  var colorList2 = <String>['red', 'yellow', 'blue', 'green'];
  print(colorList1); //打印的不是地址，不同于java
  //2、List的常用方法
  List<String> colorList3 = ['red', 'yellow', 'blue', 'green'];
  colorList3.add('white');
  print(colorList3);
  print(colorList3[2]); //角标从0开始
  print(colorList3.length); //获取集合的长度
  colorList3.insert(1, 'black'); //在集合指定index位置插入指定的元素
  colorList3.removeAt(2); //移除集合指定的index=2的元素，第3个元素
  print(colorList3.sublist(1, 3)); //截取子集合
  print(colorList3.getRange(1, 3)); //获取集合中某个范围元素
  print(colorList3
      .join('<--->')); //将元素以一定格式拼接，输出: red<--->yellow<--->blue<--->green
  print(colorList3.isEmpty);
  colorList3.clear(); //清除所有元素
  print(colorList3.contains('green'));
  var intlist1 = [1, 2, 5, 6, 3];
  intlist1.sort(); //[1, 2, 3, 5, 6]
  print(intlist1);
  intlist1.sort((a, b) => -a.compareTo(b)); //自定义比对器
  print(intlist1); //[6, 5, 3, 2, 1]
  var intlist2 = intlist1.reversed.toList(); //翻转顺序
  print(intlist2);
  //2、List的遍历
  List<String> colorList4 = ['red', 'yellow', 'blue', 'green'];
  for (var i = 0; i < colorList4.length; i++) {
    //可以使用var或int
    print("遍历1：" + colorList4[i]);
  }
  colorList4.forEach(
      (color) => print("遍历2：" + color)); //forEach的参数为Function. =>使用了箭头函数
  //for-in遍历
  for (var color in colorList4) {
    print("遍历3：" + color);
  }
  //while+iterator迭代器遍历，类似Java中的iteator
  var colorIterator = colorList4.iterator; //获取迭代器
  while (colorIterator.moveNext()) {
    print("遍历4：" + colorIterator.current);
  }
}
